-
-
Notifications
You must be signed in to change notification settings - Fork 510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
unitary DFT for symmetric group algebra #38455
base: develop
Are you sure you want to change the base?
unitary DFT for symmetric group algebra #38455
Conversation
Documentation preview for this PR (built with commit d9416ec; changes) is ready! 🎉 |
a8cd73c
to
27b5180
Compare
To handle extensions of \Q, we can work over a number field containing all necessary square roots. Currently there is some redundancy. I compute the diagonalizations to know which roots to take, then compute them again when computing Fourier coefficients. |
9b2e77f
to
392a6b9
Compare
getting environment error "pytest is not installed in the venv, skip checking tests that rely on it |
relevant MSE questions: |
dc43776
to
32c6924
Compare
I checked that this builds if merged over the latest beta. Could you fix "This branch is out-of-date with the base branch" ? |
That isn’t necessary until it is fully reviewed and only as a final check with the most recent changes. |
These rebases unbreak the CI - so that's the main reason to do it. |
It looks to me like the CI tests are passing (one skipped) so far. |
Work in issue 38456 is sufficient to construct this DFT. We compute |
So the However, I am thinking we should just reproduce their algorithm directly to take advantage of Sage's linear algebra packages. The only function really used is the What do you think? |
That's unfortunate that it's not included by default. I don't know what the barriers are to getting it incorporated, or how long that would take. It would certainly make things easy. I agree. We'd been talking about doing this anyways, and I'm happy to go ahead and just rewrite it in Sage. I'll try to get a basic version working tomorrow. Then there will probably be ways to optimize it. |
I believe it should just be getting the echelon form of the appropriately augmented Gram matrix of the initial sesquilinear form and then taking the appropriate submatrix (possibly transposed). So it should just be a few lines of code (at most). |
I agree it should a lot simpler than what is written in GAP. However, a straightforward augmentation and row reduction doesn't yield the correct matrix. For example, when
which is correct. However,
which is just
which suggests at some point we should be factoring scalars as |
Okay, a little bit more care is needed here since it does the RREF. We only want to operate on the strictly lower (or upper) triangle of the matrix as the other part is taken care of by the symmetry. So a short version is to use the inverse of the upper part of the LU decomposition:
Of course, this is not very efficient since it is computing far more things than necessary. However, it is easy to code... |
Mathematically it's not echelon form, and not even Gram-Schmid, as you have a twist by the Galois automorphism in the factorisation. |
For what it's worth, here is a direct translation of the GAP code into Sage which appears to be working now. Perhaps we can reduce it, but I agree with Dima that the twist makes it something slightly different.
|
add a SEEALSO since this is an extended form of the Cholesky decomposition Co-authored-by: Travis Scrimshaw <[email protected]>
this method for decomposition a Hermitian matrix U = AA* is similar in spirit to the Cholesky decomposition, but extends it to work over finite fields of square order.
…alters/sage into hermitian_decomposition
unitary DFT of symmetric group for number fields and finite fields - perform the unitary DFT of the symmetric group over finite fields and number fields - compute unitary representations of the symmetric group over finite fields - use real orthogonal representations as unitary representations for symmetric group Co-Authored-By: Travis Scrimshaw <[email protected]> Co-Authored-By: Dima Pasechnik <[email protected]>
we now have a standalone method to compute the Hermitian decomposition of a matrix, so we should use it when computing the change-of-basis matrix for a unitary representation
since U = A*A.H, we need to adjust the unitary representation to be A.H\rho(g)A.H.inverse(). also need to update the doctests
appears to be working now with the change to using the symmetric group algebra to get the representation
using self._specht causes tests to fail
when using the SGA version of specht, we don't have access to the yang_baxter_graph
we're using .H in the unitary_change_of_basis, so the doctests need to reflect that
move conjugate-transpose to cached part Co-authored-by: Travis Scrimshaw <[email protected]>
move .H to cached part Co-authored-by: Travis Scrimshaw <[email protected]>
590321e
to
452fbc7
Compare
we have renamed hermitian_decomposition to cholesky(extended=True)
📝 Checklist
⌛ Dependencies